#include <iostream>

#include "CmdManager.h"

using namespace std;

// 主函数
int main() {

    // 创建命令管理对象
    CmdManager cmdManager;
    cmdManager.Init();

    // 打印帮助信息
    cmdManager.PrintAllHelp();

    // // 进入主循环并处理输入信息
    // cout << "New Command:";
    // int cmd;// CourseCmd类型没有重载>>,无法使用cin>>进行输入
    // while (cin >> cmd) {
    //     if (cin.good()) 
    //     {
    //         bool exitCode = cmdManager.HandleCmd((CourseCmd)cmd);
    //         if (!exitCode)
    //             return 0;
    //     }

    //     cout << "-------------------------" << endl;
    //     cout << "New Command:";

    //     // 清理输入流，避免刚才流中的字符影响后续输入
    //     cin.clear();
    //     cin.ignore();
    // }

    // 进入主循环并处理输入信息
    cout << "New Command:";
    int cmd;// CourseCmd类型没有重载>>,无法使用cin>>进行输入
    try
    {
        while (cin >> cmd)//如果直接回车，就会导致cin成为false
        {
            bool exitCode = cmdManager.HandleCmd((CourseCmd)cmd);
            if (!exitCode)
                return 0;

            cout << "-------------------------" << endl;
            cout << "New Command:";

            // 清理输入流，避免刚才流中的字符影响后续输入
            cin.clear();
            cin.sync();
            
        }
    }
    catch(ios_base::failure &bf)
    {
        cout<<bf.what()<<endl;
        cout<<"O! the horror!\n";
    }

    return 0;
}

